<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
// use \app\admin\model\Goods;
use \app\admin\model\Goods as GoodsModel;
use \app\admin\model\Goods;
class Test extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        //手动实例化模型
        // $model=new \app\admin\model\Goods();
        // $model=new Goods();
        $model=new GoodsModel();
        // 查询多条数据
        // 获取所有数据
        // $data = \app\admin\model\Goods::select();
        // $data=\think\Db::table('tpshop_goods')->select();
        $data=$model::select();
        // 这一种方法可以直接获取数据表中的内容不需要写模型
        // 根据主键获取多个数据
        // $data = \app\admin\model\Goods::select('32,33');
        // $data = \app\admin\model\Goods::select([32,33]);
        // dump($data);
        // foreach($data as $v){
        //     // dump($v['goods_name']);
        //     dump($v->goods_name);
        // }
        // 返回结果 外层是数组，里面是对象
        // 为了打印查看数据方便，可以将返回的结果 转化为标准的二维数组
        // 1.foreach
        // foreach($data as &$v){
        //     $v=$v->toArray();
        // }
        // unset($v);//$v没用了就销毁
        // foreach($data as $k=>$v){
        //     $data[$k]=$v->toArray();
        // }
        // dump($data);
        // 2. 集合对象 \think\Collection
        $data=(new \think\Collection($data))->toArray();
        dump($data);

    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        
        // $data=\app\admin\model\Goods::where('id','=','34')->find();
        // dump($data->toarray());
        // $data=\app\admin\model\Goods::where('goods_number','>','30')->select();
        // dump($data);
        // 批量查询
        // $data=\app\admin\model\Goods::where(['id'=>32,'goods_name'=>'Apple iPhone 7 Plus'])->select();
        // dump($data);
        // 连表查询语法
        // SELECT t1.*,t2.username FROM `tpshop_address` as t1 left join tpshop_user as t2 on t1.user_id=t2.id where t1.id<10;
        // $data=\app\admin\model\Address::alias('t1')
        //     ->join('tpshop_user t2','t1.user_id=t2.id','left')
        //     ->where('t1.id','<',10)
        //     ->field('t1.*,t2.username')
        //     ->select();
        //     dump($data);
        // 统计查询
        // $count=\app\admin\model\Goods::where('id','>',35)->count();
        // dump($count);
        // 字段值查询
        // $goods_name=\app\admin\model\Goods::where('id','=',35)->value('goods_name');
        // dump($goods_name);
        // $goods_name=\app\admin\model\Goods::where('id','>',35)->column('goods_name');
        // dump($goods_name);
        // $goods_name=\app\admin\model\Goods::where('id','>',35)->column('goods_name','id');
        // dump($goods_name);

        // $data=\app\admin\model\Goods::where('goods_name','like','%iphone%')->select();
        // dump($data);
        $data=\app\admin\model\Goods::where('id','>',35)
        ->where('goods_name','like','%iphone%')
        ->field('id,goods_name,goods_price')
        ->order('goods_number desc,goods_price asc')
        ->select();
        dump($data);
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id,$name)
    {
        //
        // dump($id);
        // dump($name); 
        // 查询一条数据
        $data=\app\admin\model\Goods::find(33);
        // $data=\app\admin\model\Goods::get(32);
        // dump($data->goods_name);
        // dump($data['goods_number']);
        // 转换为数组后
        // dump($data->toarray());
        dump($data['goods_name']);
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //渲染模板
        // return view();
        // return view('edit');
        // return $this->fetch();
        // return $this->fetch('edit');
        // 变量赋值及渲染模板
        // $user=['id'=>100,'username'=>'zhangsan'];
        // $this -> assign('user', $user);
        // return view();
        // 使用view进行变量赋值
        // $user=['id'=>100,'username'=>'zhangsan'];
        // $age=30;
        // return view('edit',['user'=>$user,'age'=>$age]);
        // return $this->fetch('edit',['user'=>$user,'age'=>$age]);
        // php的函数compact
        // $user=['id'=>100,'username'=>'zhangsan'];
        // $age=30;
        // dump(compact('user','age'));
        // return view('edit',compact('user','age'));
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete()
    {
        // 查询并删除（调用模型的delete方法）
        // $goods=\app\admin\model\Goods::find(56);
        // if(empty($goods)){
        //     echo"该目标已经被删除了";die;
        // }
        // $res=$goods->delete();
        // dump($res);
        // 通过where指定条件 再调用Query对象的delete方法
        // $res=\app\admin\model\Goods::where('id','=','55')->delete();
        // dump($res);

        // 静态destroy方法（推荐）
        $res=\app\admin\model\Goods::destroy('54');
        $res1=\app\admin\model\Goods::destroy('53,52');
        dump($res);
        dump($res1);
    }
    public function add(){
        // 添加数据
        // sava方法
        // $goods_model=new Goods();
        // $goods_model->goods_name='shenzhou';
        // $goods_model->goods_price='5999';
        // $goods_model->save();
        // dump($goods_model->id);
        // 静态create方法
        // $data=['goods_name'=>'xiaomi','goods_price'=>'1499'];
        // $User=new Goods();
        // //$goods=$User::create($data);
        // $goods=\app\admin\model\Goods::create($data);
        // dump($goods->id);
        // 批量添加
        // $goods_model=new Goods();
        // $data=[
        //     ['goods_name'=>'xiaomi3','goods_price'=>'1499'],
        //     ['goods_name'=>'xiaomi4','goods_price'=>'1499']
        // ];
        // $res=$goods_model->saveAll($data);
        // dump($res);

    }
    public function alert()
    {
        // sava方法
        // 先查询再修改
        // $goods=\app\admin\model\Goods::find(32);
        // $goods->goods_price=5999;
        // $goods->goods_number=111;
        // $res=$goods->allowField(true)->save();
        // dump($res);
        // （推荐）直接静态调用模型的update方法（修改的数据，修改条件，过滤非数据表字段）
        // \app\admin\model\Goods::update(['goods_price'=>4999,'goods_number'=>999,'id'=>33],true);
        // $res2=\app\admin\model\Goods::update(['goods_price'=>4999,'goods_number'=>123],['id'=>33],true);
        // dump($res2);
        // 底层Db的update方法（通过where方法后使用update方法）
        // 单个修改
        $res3=\app\admin\model\Goods::where('id','=',32)->update(['goods_price'=>2999,'goods_number'=>1000]);
        dump($res3);
        // 批量修改
        $res4=\app\admin\model\Goods::where('id','>',44)->update(['goods_price'=>4999,'goods_number'=>555]);
        dump($res4);

        // 区别:模型的update方法和底层的update方法
        // 1.返回值不同：模型的返回模型对象，  底层的返回修改条数
        // 2.包含的功能不同，模型的update有过滤非数据表字段的功能，底层的没有

    }
    public function password()
    {
       echo encrypt_password('123');
    }
    public function test_session()
    {
        // session
        // 设置
        // session('username','admin');
        // 读取
        // dump(session('username'));
        // 判断
        // dump(session('?username'));
        // 删除单个
        // session('username',null);
        // dump(session('password'));
        // 删除所有
        // session(null);

        // session数组用法 点语法

        // session('user',['id'=>12,'username'=>'admin']);
        // dump(session('user.username'));
        // session('user.email','1232sad@qq.com');
        // dump(session('user'));
        // session('user.email',null);
        // dump(session('user'));

        // cookie
        // 设置
        // cookie('username','admin',3600);
        // 读取
        // dump(cookie('username'));
        // 判断
        // dump(cookie('?username'));
        // 删除单个
        // dump(cookie('username',null));
        // 删除所有
        // dump(cookie(null));
        
    }
}
